(100%)Врезка - Об указателях
Указатель на переменную отвечает на вопрос "где лежит переменная".
Дело в том, что в языке С при вызове функции параметры передаются по значению. То есть внутри у функции появляется копия переданной переменой, с тем же значением, с которой функция может делать что хочет. Не может только одного – сделать так, чтобы изменения в копии повлияли на исходную переменную.
Поэтому-то функции scanf передается не переменная r, а указатель на нее &r. Зная указатель ("где лежит переменная"), функция сможет изменить значение r (поместить туда то, что мы ввели с клавиатуры).
Поэтому в списке scanf перед именами переменных обычно стоят птички (амперсанды, &).
Конечно, у указателей есть применения и кроме этого ;)